//
//  ViewController.m
//  AudioKitOC
//
//  Created by youloft on 2018/5/4.
//  Copyright © 2018年 AudioKit. All rights reserved.
//

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@property (nonatomic, strong) NSArray *datas;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
    self.tableView.rowHeight = 50;
    self.datas = @[@"AVAudioEngine",
                   @"OutPutEngine",
                   @"Echo",
                   @"TimePitch",
                   @"Varispeed"];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.datas.count;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class])];
    cell.textLabel.text = self.datas[indexPath.row];
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *controllerStr = [NSString stringWithFormat:@"%@Controller",self.datas[indexPath.row]];
    Class class = NSClassFromString(controllerStr);
    [self.navigationController pushViewController:[[class alloc] init] animated:YES];
}

/*
AVAudioPlayer - 音频播放
AVAudioRecorder - 音频录制
AVAudioSession - 音频会话 https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007875

AVAudioBuffer - 代表一个缓冲区的音频数据及其格式。
AVAudioFormat - 格式
AVAudioPCMBuffer - 操纵的缓冲区在PCM音频格式
AVAudioCompressedBuffer - 音频压缩相关

AVAudioChannelLayout - 音频通道

AVAudioConnectionPoint - 音频连接位置

AVAudioConverter - 各种格式之间转换的音频流。

AVAudioEngine - 建立一个音频的节点图，从源节点 (播放器和麦克风) 以及过处理 (overprocessing) 节点 (混音器和效果器) 到目标节点 (硬件输出) http://www.jianshu.com/p/506c62183763

AVAudioEnvironmentNode - 混响

AVAudioFile - 读取音频格式信息和进行帧分离

AVAudioFormat - 音频格式

AVAudioIONode -

AVAudioMixerNode - 音频输入输出相关

AVAudioMixing - 协议

AVAudioNode - 节点

AVAudioPlayerNode - 调度AVAudioBuffer实例的回放

AVAudioSequencer

AVAudioTime - 音频时间

AudioUnit

AVAudioUnitComponent - 提供一些音频元的详细信息，如类型、子类型,制造商,位置等

AVAudioUnitDelay - 音频延迟效果

AVAudioUnitDistortion - 音频效果场景 如  教堂  大型房间

AVAudioUnitEffect - 实现音效 http://www.jianshu.com/p/df03d566d832

AVAudioUnitEQ - 均衡器

AVAudioUnitGenerator - 生成音频输出

AVAudioUnitMIDIInstrument - 抽象类代表音乐设备或远程工具

AVAudioUnitReverb - 混响

AVAudioUnitSampler

AVAudioUnitTimeEffect - 非实时音频处理

AVAudioUnitTimePitch - 优质时间拉伸和音调变化

AVAudioUnitTimeEffect - 控制回放速度

AVMIDIPlayer - MIDI 播放

AVSpeechSynthesisVoice - 语音合成
AVAudioUnitTimeEffect - 控制回放速度

AVMIDIPlayer - MIDI 播放

AVSpeechSynthesisVoice - 语音合成
*/

@end
